/**
 * ZHU framework. Copyright 2012-, all rights reserved.
 *
 * $Id: DailyData.java 45 2012-09-19 05:36:53Z zhuxiaopeng $
 * $Revision: 45 $
 * $Date: 2012-09-19 13:36:53 +0800 (三, 2012-09-19) $
 * $Author: zhuxiaopeng $
 */
package daily.service;

import java.io.*;
import java.util.*;

import daily.entity.*;

/**
 * <p>
 * </p>
 * 
 * @author $Author: zhuxiaopeng $
 * @version $Revision: 45 $ - $Date: 2012-09-19 13:36:53 +0800 (三, 2012-09-19) $
 */
public class DailyData implements Serializable {

	/**
	 * <h3>スレッドセーフ性</h3>
	 * <p>
	 * この変数は<code>this</code>によってGuardされる。 この変数は<code>final</code>
	 * であり、参照先がスレッドセーフであるため、スレッドセーフ性を破ることはない。
	 * この変数の参照先はスレッドセーフ<strong>ではない</strong>。
	 * </p>
	 */
	private static final long serialVersionUID = 1L;

	public DailyData(final Daily daily) {
		this.daily = daily;
	}

	/**
	 * <p>
	 * プロパティ<code>daily</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>daily</code>の値
	 */
	public Daily getDaily() {
		return daily;
	}

	/**
	 * <p>
	 * プロパティ<code>holiday</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>holiday</code>の値
	 */
	public boolean isHoliday() {
		if (daily != null) {
			final Calendar c = Calendar.getInstance();
			c.setTime(daily.getDate());
			final int e = c.get(Calendar.DAY_OF_WEEK);
			if (e == 1 || e == 7) {
				return true;
			}
		}
		return false;
	}

	/**
	 * <p>
	 * プロパティ<code>editPermission</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>editPermission</code>の値
	 */
	public boolean isEditPermission() {
		return editPermission;
	}

	/**
	 * <p>
	 * プロパティ<code>editPermission</code>の値を設定する。
	 * </p>
	 * 
	 * @param editPermission
	 *            プロパティ<code>editPermission</code>に設定する値
	 */
	public void setEditPermission(final boolean editPermission) {
		this.editPermission = editPermission;
	}

	/**
	 * <p>
	 * 作業時間
	 * </p>
	 * 
	 * @return
	 */
	public String getWorkTime() {
		if (daily.getStartTime() != null || daily.getEndTime() != null) {
			return String.format("%s〜%s", daily.getStartTime(), daily.getEndTime());
		}
		return null;
	}

	private final Daily daily;

	private boolean editPermission;

}
